/**create by framework at 2019年07月23日 15:33:44**/
package com.star.truffle.module.fzjz.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.star.truffle.module.fzjz.cache.FzjzUserInfoCache;
import com.star.truffle.module.fzjz.domain.Area;
import com.star.truffle.module.fzjz.dto.req.FzjzUserInfoRequestDto;
import com.star.truffle.module.fzjz.dto.res.FzjzUserInfoResponseDto;
import com.star.truffle.module.fzjz.properties.FzjzCfg;
import com.star.truffle.module.user.service.UserTypeIntf;

@Service
public class FzjzUserInfoService implements UserTypeIntf<FzjzUserInfoResponseDto> {

  @Autowired
  private FzjzUserInfoCache fzjzUserInfoCache;
  @Autowired
  private FzjzCfg fzjzCfg;

  public void updateFzjzUserInfo(FzjzUserInfoRequestDto fzjzUserInfoRequestDto) {
    FzjzUserInfoResponseDto fzjzUserInfoResponseDto = fzjzUserInfoCache.getFzjzUserInfo(fzjzUserInfoRequestDto.getUserId());
    fzjzUserInfoRequestDto.setLastModifyTime(new Date());
    if(null == fzjzUserInfoResponseDto) {
      this.fzjzUserInfoCache.saveFzjzUserInfo(fzjzUserInfoRequestDto);
    }else {
      this.fzjzUserInfoCache.updateFzjzUserInfo(fzjzUserInfoRequestDto);
    }
  }

  public List<FzjzUserInfoResponseDto> queryFzjzUserInfo(FzjzUserInfoRequestDto fzjzUserInfoRequestDto) {
    return this.fzjzUserInfoCache.queryFzjzUserInfo(fzjzUserInfoRequestDto);
  }

  public Long queryFzjzUserInfoCount(FzjzUserInfoRequestDto fzjzUserInfoRequestDto) {
    return this.fzjzUserInfoCache.queryFzjzUserInfoCount(fzjzUserInfoRequestDto);
  }

  @Override
  public FzjzUserInfoResponseDto getByUserId(Long userId) {
    FzjzUserInfoResponseDto fzjzUserInfoResponseDto = this.fzjzUserInfoCache.getFzjzUserInfo(userId);
    if(null != fzjzUserInfoResponseDto) {
      Area area = fzjzCfg.getAreaBy(fzjzUserInfoResponseDto.getAreaId());
      if(null != area) {
        fzjzUserInfoResponseDto.setAreaName(area.getAreaName());
      }
    }
    return fzjzUserInfoResponseDto;
  }

  @Override
  public void deleteByUserId(Long userId) {
    this.fzjzUserInfoCache.deleteFzjzUserInfo(userId);
  }

}